package com.project.easy.common.util.util;

import com.project.easy.common.util.collection.CollectionUtil;
import com.project.easy.common.util.enums.BaseEnums;
import com.project.easy.common.util.string.StringUtil;

import java.util.HashMap;
import java.util.Map;

/**
 * @author GreatorMan.cool
 * @copyright: Copyright (c) 2020
 * @company: 扬起科技有限公司
 * @date 2021/9/8 21:32
 * @description:
 */
public final class EnumsHelper {
    /**
     * 私有构造方法
     */
    private EnumsHelper() {
    }

    /**
     * 根据Code获取枚举
     * @param code 编码
     * @param enumsClass 枚举Class
     * @param <T> 类型
     * @return 返回枚举值 如果
     */
    public static  <T extends BaseEnums>  T getEnumsByCode(String code, Class<T> enumsClass) {
        T[] enumConstants = enumsClass.getEnumConstants();
        for (T item : enumConstants) {
            if (item.getCode().equals(code)) {
                return item;
            }
        }
        return null;
    }
    /**
     * 获取 枚举所有值
     * @param enumsClass 枚举Class
     * @param <T>  枚举类型
     * @return 返回值
     */
    public static <T extends BaseEnums> Map<String, String> getEnumsAll(Class<T> enumsClass) {
        T[] enumConstants = enumsClass.getEnumConstants();
        Map<String, String> result = new HashMap<>(CollectionUtil.listSize(enumConstants));
        for (T enumOb: enumConstants) {
            if (StringUtil.isNotBlank(enumOb.getCode()) && StringUtil.isNotBlank(enumOb.getName())) {
                result.put(enumOb.getCode(), enumOb.getName());
            }
        }
        return result;
    }
}
